package gw.config;
import java.io.File;
import java.net.URL;
import java.net.URLEncoder;
import java.net.URLDecoder;
/**
* Copyright 2010 Guidewire Software, Inc.
*/
public class ResourceFileResolver {
public File resolveToFile(String fileName) {
return resolveToFile(fileName, getClass().getClassLoader());
}
public File resolveToFile(String fileName, ClassLoader classLoader) {
URL url = classLoader.getResource(fileName);
return resolveURLToFile(fileName, url);
}
public File resolveURLToFile(String fileName, URL url) {
if (url == null) {
return null;
}
String urlFile = URLDecoder.decode(url.getFile());
if (urlFile.startsWith("file:/")) {
urlFile = urlFile.substring(6, urlFile.length() - fileName.length() - 2); // Windows style
if (!new File(urlFile).exists()) {
urlFile = url.getFile().substring(5, url.getFile().length() - fileName.length() - 2); // Unix style
}
} else if (urlFile.startsWith("file:")) {
urlFile = urlFile.substring(5, urlFile.length() - fileName.length() - 2); // Windows style
} else {
urlFile = urlFile.substring(1, urlFile.length() - fileName.length()); // Windows style
if (!new File(urlFile).exists()) {
urlFile = url.getFile().substring(0, url.getFile().length() - fileName.length()); // Unix style (e.g. /home/foo/bar/Class.gs)
}
}
return new File(urlFile);
}
}